#pragma once

#include <vector>
#include <functional>
#include <string>
#include <filesystem>
#include <iostream>

namespace njm {

    template<typename T, typename... Rest>
    void hashCombine(std::size_t& seed, const T& v, const Rest&... rest) {
        seed ^= std::hash<T>{}(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
        (hashCombine(seed, rest), ...);
    }

    const std::string getCompletePath(const std::string& relativePath);
}


